iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

剛修完 sideproject 的 prod 蟲蟲, 累死xD, 快來寫鐵人賽

今天我們接著介紹判斷式, 判斷式是程式設計最基礎功能之一, 即使連組合語言(註1)裡面, 都是滿滿的判斷式在跑, 可見他的使用頻率

1.判斷式語法1

修改 main.go

package main

import (
  "fmt"
)

var lg = fmt.Println

func main(){
  
  a := 1
  b := 2

  if a + b == 3 {
    lg(" answer is true")
  } else {
    lg("answer is false")
  }

}

執行結果:印出 answer is true
說明:

  1. if 關鍵字後面的 a + b == 3 , 編譯器會判斷等於符號(==) 的左右兩邊, 右邊為3不用另外計算, 左邊 1+2會先經過計算也是3, 所以編譯器會得到一個 3 == 3 的式子, 因為這句話是正確的, 所以就會回傳 true
  2. 然後程式就變成 if true
  3. 接著會執行上面的{ lg("answer is true") }(這在程式裡面稱為block)
  4. 所以當條件正確的時候執行上面block裡面的程式碼, 如果條件錯誤就執行else block 裡面的程式碼

2.判斷式語法加上錯誤處理

修改 main.go

package main

import (
  "fmt"
)

var lg = fmt.Println

func compare(user string, target string) bool{
  return user == target
}

func main(){
  
  user1 := "yale"
  user2 := "jack"

  if compare(user1, user2){
    lg( user1 +" is "+ user2)
  } else {
    lg( user1 +" is not "+ user2 )
  }

}

執行結果:印出 yale is not jack
說明:

  1. 定義了func compare(user string, target string) bool
  2. 其中user跟target是接傳參的變數, 返回值型態是bool
  3. 宣告了兩個變數 user1和user2
  4. 判斷式 if compare(user1, user2), 將 user1, user2的值"yale","jack" 傳入函式, return回一個判斷式
  5. 以編譯器的角度, 看到 return user == target 時, 會先計算好 "yale" == "jack" 這個判斷式, 回傳一個false
  6. 所以 return user == target >> return "yale" == "jack" >> return false, 最後就是回傳一個false出去
  7. 所以程式碼就變成 if false { } else { }
  8. 所以就會執行後面的block的lg( user1 + "i is not " + user2 )

註1: 機器語言是CPU閱讀的語言, 因為人類難以理解, 所以聰明的前輩工程師發明了組譯器及組合語言, 讓工程師可以撰寫比較容易讀懂的組合語言, 這樣程式開發效率才會快一點.


上一篇
0x06 資料型態 Datatype
下一篇
0x08 React 前導 javascript 101-1
系列文
Go朱尼爾的學習雜記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言